11 - Inteligentna kamera
Wprowadzenie do przetwarzania obrazów
Politechnika Poznańska, Instytut Robotyki i Inteligencji Maszynowej
Ćwiczenie laboratoryjne 11: inteligentna kamera
Powrót do spisu treści ćwiczeń laboratoryjnych
Wstęp
Wraz z rozwojem konwolucyjnych sieci neuronowych i głębokiego uczenia maszynowego, zaczęło powstawać wiele urządzeń, które pozwalają przyspieszać wnioskowanie takich sieci. Urządzenia te cechują się najczęściej bardzo dobrym stosunkiem wydajności do poboru energii. Niektóre urządzenia przyjmują postać pendrive jak Intel NCS 2, a niektóre niewielkich dysków przenośnych jak Google Coral. Powstają obecnie również produkty, które nie tylko przyspieszają wnioskowanie, ale potrafią równocześnie rejestrować obraz.
Przykładem takiego produktu jest kamera OpenCV AI Kit: OAK—1, która potrafi nagrywać wideo w 4k@30fps i wyposażona jest w zintegrowane jednostki przetwarzające obraz Intel Myriad X. Podczas tego laboratorium, zostanie ona wykorzystana do zbudowania rzeczywistej aplikacji systemu wizyjnego.
Dane
Pobierz paczkę ze skryptami do zadań.
Informacja o środowisku wirtualnym
UWAGA Ta instrukcja wymaga systemu operacyjnego Ubuntu oraz zainstalowanych dodatkowych bibliotek. Tworząc nowy projekt w IDE PyCharm, wykorzystaj poprzednio skonfigurowane środowisko virtualenv
. Ścieżka do interpretera Python to /home/put/.virtualenvs/opencvai/bin/python
.
Zadanie wstępne
Wykorzystując klasyfikator z zajęć o sieciach neuronowych (instrukcja C), przygotuj odpowiednio model do wykorzystania jednostki wnioskującej w kamerze i uruchom aplikację wizualizującą.
Kroki:
Zmodyfikuj skrypt
00_convert_onnx_to_blob.py
ustawiając ścieżkę do swojego modelu. Zwróć uwagę na nazwę pliku. Postaraj się zachować oryginalne nazewnictwoclf_resnet18.onnx
.Uruchom skrypt. Jeśli wszystko się powiodło, w terminalu powinna pojawić się wiadomość:
Downloading ../_data/11/clf_resnet18_openvino_2021.4_5shave.blob... Success! Success! Model path: .../clf_resnet18_openvino_2021.4_5shave.blob
Zmodyfikuj w programie
scripts/11/01_own_classifier_infer.py
zmiennąlabels
ustawiając własne etykiety klas.Uruchom program i zweryfikuj jego działanie korzystając z inteligentnej kamery. Przykładowe, docelowe działanie programu przedstawiono na filmie.
Zadania do samodzielnej realizacji
- Uruchom skrypt
scripts/11/gesture_recogniotion/main.py
i zweryfikuj działanie programu. - Twoim zadaniem jest sterowanie wirtualnym pojazdem z wykorzystaniem gestów dłoni. Dlatego zmodyfikuj funkcję
recognize_gesture
ze skryptuscripts/11/gesture_recogniotion/Gesture.py
w taki sposób, żeby na podstawie gestu (odpowiedniego ułożenia palców dłoni) wykonywać jedną z 4 akcji:PASS
(dłoń otwarta),ACTION
(pięść zaciśnięta),LEFT
(otwarty tylko palec wskazujący),RIGHT
(otwarte dwa palce, tzw. Victoria).
UWAGA Wykorzystaj do tego informację o zgiętych palcach. Zbuduj odpowiednie instrukcje warunkowe, które do zmiennej r.gesture
przypiszą odpowiednią akcję.
Przykładowe działanie programu przedstawiono na filmie.
Zadania dodatkowe
Zapoznaj się z innymi, przykładowymi programami stworzonymi do inteligentnej kamery przez programistów depthai. Może któreś zastosowanie cię zainteresowało? Sprawdź demo!